Amazon S3 Tables の Table Bucketを削除する方法 #AWSreInvent
AWS事業本部コンサルティング部の石川です。Amazon S3 Tables の 作成済み Table Bucket を削除する際に色々ハマったのでそれを紹介します。S3 Tables サービスクオータはリージョンごとに10(デフォルト)と思ったよりも小さいので、きっと役に立つだろうと思います。
Table Bucketの階層と削除する順番
執筆時点(2024/12/23)は、マネジメントコンソールから Table Bucketを作成できますが、削除はできません。そのため、Table Bucketを削除するには、awsコマンド(AWSCLI)を使う必要があります。
Table Bucketは、Table Bucket、Namespace、Tableの順に階層構造になっています。そのため、Tableをすべて削除した後、Namespace削除して、Table Bucket削除します。今日現在では強制削除(--force
)オプションはありません。
table_bukets
├── namespace1
│ ├── table1
│ └── table2
└── namespace2
無理やり削除しようとすると、以下のようにエラーになります。
$ aws s3tables delete-namespace --region us-east-1 --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241218 --namespace cm_namespace
An error occurred (NotFoundException) when calling the DeleteNamespace operation: The specified namespace does not exist.
Table Bucketを削除する方法
以下の階層のTable Bucketを例に削除します。
cm-namespace-20241218
└── cm_namespace
└── lineorder
なお、マネジメントコンソールからはこのように見えます。
Tableの削除
最初にテーブルをすべて削除します。
$ aws s3tables delete-table \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241218 \
> --namespace cm_namespace \
> --name lineorder
Namespaceの削除
テーブルがすべて削除されたら、Namespaceを削除します。
$ aws s3tables delete-namespace \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241218 \
> --namespace cm_namespace
Table Bucketの削除
最後にTable Bucketを削除します。
$ aws s3tables delete-table-bucket \
> --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241218
上記の手順でうまく削除できた方は、以降は読まなくて構いません。ブログ終了です!
私がハマったケース
マネジメントコンソールは複数のNamespaceは表示されない仕様(?)と知らずに以下のような階層だと思っていました。
cm-namespace-20241218
└── cm_namespace
└── lineorder
実際には、以下のようにNamespaceが複数ありました。
cm-namespace-20241218
├── cm_namespace
│ └── lineorder
└── test_namespace
最終的にマネジメントコンソールからはNamespaceがないように表示されますが以下のような状態でした。
cm-namespace-20241218
└── test_namespace
Namespaceの一覧を取得することで、削除していないtest_namespaceを知ることができて、最終的にTable Bucket削除できました。
$ aws s3tables list-namespaces --table-bucket-arn arn:aws:s3tables:us-east-1:123456789012:bucket/cm-namespace-20241218
{
"namespaces": [
{
"namespace": [
"test_namespace"
],
"createdAt": "2024-12-19T11:50:08.080299+00:00",
"createdBy": "123456789012",
"ownerAccountId": "123456789012"
}
]
}
やはり困っている人は、居たようです。
最後に
Amazon S3 Tables の Table Bucket を削除する際には、階層構造を理解し、適切な順序で削除作業を行うことが重要です。マネジメントコンソールの表示には限界があるため、AWS CLI を使用して正確な情報を取得することが不可欠です。
特に、複数の Namespace が存在する可能性を考慮し、list-namespaces
コマンドを活用して、すべての Namespace を確認することが推奨されます。この方法により、見落としがちな Namespace を発見し、完全な削除プロセスを実行できます。また、S3 Tables のサービスクオータが比較的小さいことを考えると、不要な Table Bucket を適切に管理し削除することは、リソースの効率的な利用につながります。最後に、AWS のサービスを使用する際は、マネジメントコンソールの表示だけでなく、CLI や API を併用して、より詳細かつ正確な情報を得ることが、トラブルを回避し、スムーズな運用を行う上で重要であることを再認識させられました。
半年後に、マネジメントコンソールもAWSCLIも便利になり、優しい世界になっていることを願います。